package org.ventura.sistemafinanciero.entity;

// Generated 02-may-2014 11:48:28 by Hibernate Tools 4.0.0

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * Usuario generated by hbm2java
 */
@Entity
@Table(name = "USUARIO", schema = "BDSISTEMAFINANCIERO")
@XmlRootElement(name = "usuario")
@XmlAccessorType(XmlAccessType.NONE)
@NamedQueries({
		@NamedQuery(name = Usuario.findByUsername, query = "SELECT u FROM Usuario u WHERE u.username = :username"),
		@NamedQuery(name = Usuario.findByUsernameAndPasswordAndRol, query = "SELECT u FROM Usuario u INNER JOIN u.usuarioRols r WHERE u.username = :username AND u.password = :password AND r.rol.denominacion = :rol") })
public class Usuario implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public final static String findByUsername = "Usuario.findByUsername";
	public final static String findByUsernameAndPasswordAndRol = "Usuario.findByUsernameAndPasswordAndRol";

	private BigInteger idUsuario;
	private String username;
	private String password;
	private Set usuarioRols = new HashSet(0);
	private Set trabajadorUsuarios = new HashSet(0);

	public Usuario() {
	}

	public Usuario(BigInteger idUsuario, String username) {
		this.idUsuario = idUsuario;
		this.username = username;
	}

	public Usuario(BigInteger idUsuario, String username, String password,
			Set usuarioRols, Set trabajadorUsuarios) {
		this.idUsuario = idUsuario;
		this.username = username;
		this.password = password;
		this.usuarioRols = usuarioRols;
		this.trabajadorUsuarios = trabajadorUsuarios;
	}

	@Id
	@Column(name = "ID_USUARIO", unique = true, nullable = false, precision = 22, scale = 0)
	public BigInteger getIdUsuario() {
		return this.idUsuario;
	}

	public void setIdUsuario(BigInteger idUsuario) {
		this.idUsuario = idUsuario;
	}

	@Column(name = "USERNAME", nullable = false, length = 60, columnDefinition = "nvarchar2")
	public String getUsername() {
		return this.username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	@Column(name = "PASSWORD", length = 140, columnDefinition = "nvarchar2")
	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<UsuarioRol> getUsuarioRols() {
		return this.usuarioRols;
	}

	public void setUsuarioRols(Set usuarioRols) {
		this.usuarioRols = usuarioRols;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<TrabajadorUsuario> getTrabajadorUsuarios() {
		return this.trabajadorUsuarios;
	}

	public void setTrabajadorUsuarios(Set trabajadorUsuarios) {
		this.trabajadorUsuarios = trabajadorUsuarios;
	}

}
